package com.chtounet.keo.importer;

import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

import com.chtounet.keo.importer.xls.dto.KillbaseDTO;



/**
 * Generate some events on a given calendar
 * @author chtounet
 *
 */
public class EventGenerator {
	
	private static final Log LOG = LogFactory.getLog(EventGenerator.class);
	
	
	/** global xls DTO */
	private KillbaseDTO dto = new KillbaseDTO();
	

	public EventGenerator() {
		
	
	}
	
	public void generate(InputStream xlsFile) throws IOException {
		this.populateDTO(xlsFile); //on remplit le DTO avec le fichier excel passŽ en param�tre.
		
	}
	
	
	protected void populateDTO(InputStream xlsFile) throws IOException {
		
		//on va créer l'objet poi
		try {
			POIFSFileSystem fs = new POIFSFileSystem(xlsFile);
			HSSFWorkbook wb = new HSSFWorkbook(fs);
            HSSFSheet sheet = wb.getSheetAt(0);
            
            if (null == sheet) {
            	throw new RuntimeException("Problème au chargement du worksheet");
            }
			
            //on va commencer à scruter le fichier excel
            if (sheet.getRow(0).getCell(0).getStringCellValue().equals("nom de l'équipe")) {
            	HSSFRow row = sheet.getRow(0);
            	LOG.info("Club name : " + row.getCell(1).getStringCellValue());
            	this.dto.setClubName(row.getCell(1).getStringCellValue());
            }
            
            if (sheet.getRow(1).getCell(0).getStringCellValue().equals("serveur")) {
            	HSSFRow row = sheet.getRow(0);
            	LOG.info("Nom du serveur : " + row.getCell(1).getStringCellValue());
            	this.dto.setServerVersion(row.getCell(1).getStringCellValue());
            }
            
            
            String nbSaison = sheet.getRow(2).getCell(0).getStringCellValue();
            if (StringUtils.isNotEmpty(nbSaison)) {
            	if (Integer.parseInt(nbSaison) != 0) {
            		HSSFRow row = sheet.getRow(0);
            		LOG.info("numéro de la saison : " + row.getCell(1).getStringCellValue());
            		this.dto.setServerVersion(row.getCell(1).getStringCellValue());
            	}
            }
            
			
			
//			this.dto.setSeasonNumber(0);
//			this.dto.setServerVersion("");
//			
//			HealDTO heal = new HealDTO(new Date(), 0);
//			
//			ResearchDTO research = new ResearchDTO(new Date(), 0);
//			
//			FormationDTO formation = new FormationDTO(new Date(), 0);
			
		} catch (IOException e) {
			LOG.error(e.getMessage());
			throw new IOException(e);
		} catch (NumberFormatException e) {
			LOG.error("problème avec le numéro de la saison : " + e.getMessage());
			throw e;
		}
		
		
		
	}


	/**
	 * add the final entry in the calendar
	 */
	protected void generateEntry() {
		
		
		
	}

	public KillbaseDTO getDto() {
		return dto;
	}

	public void setDto(KillbaseDTO dto) {
		this.dto = dto;
	}
	
	
	
}
